package com.eastfair.projectcore.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * <p>
 * 实体类
 *
 * </p>
 *
 * @author zjn
 * @since 2021-08-10
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(value = "FunctionDTO", description = "表单")
public class FormFieldDTO implements Serializable {

    /**
     * 校验标识 新增校验
     */
    public interface VerifyInsert {
    }

    /**
     * 校验标识 新增校验
     */
    public interface VerifyUpdate {
    }

    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @ApiModelProperty(value = "主键")
    @NotNull(groups = {VerifyUpdate.class}, message = "id不能为空")
    private Long id;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    private Long projectId;
    /**
     * 展会id
     */
    @ApiModelProperty(value = "展会id")
    @NotNull(groups = {VerifyInsert.class}, message = "展会id不能为空")
    private Long exhibitionId;
    /**
     * 使用主体
     */
    @ApiModelProperty(value = "使用主体")
    @NotBlank(groups = {VerifyInsert.class}, message = "使用主体不能为空")
    private String subjectType;
    /**
     * 语言环境
     */
    @ApiModelProperty(value = "语言环境")
    @NotBlank(groups = {VerifyInsert.class}, message = "语言环境不能为空")
    private String languageType;
    /**
     * 字段名称
     */
    @ApiModelProperty(value = "字段名称")
    private String fieldName;
    /**
     * 字段英文名称
     */
    @ApiModelProperty(value = "字段英文名称")
    private String fieldEnName;
    /**
     * 关键字
     */
    @ApiModelProperty(value = "关键字")
    @NotBlank(groups = {VerifyInsert.class}, message = "关键字不能为空")
    private String keyword;
    /**
     * 字段类型
     */
    @ApiModelProperty(value = "字段类型")
    private String fieldType;
    /**
     * 字段类型属性
     */
    @ApiModelProperty(value = "字段类型属性")
    private String fieldTypeAttribute;
    /**
     * 字段类型属性值
     */
    @ApiModelProperty(value = "字段类型属性值")
    private String fieldTypeAttributeValue;
    /**
     * 标签键名
     */
    @ApiModelProperty(value = "标签键名")
    private String labelKey;

    /**
     * 值键名
     */
    @ApiModelProperty(value = "值键名")
    private String labelValueKey;

    /**
     * 子集键名
     */
    @ApiModelProperty(value = "子集键名")
    private String childrenKey;
    /**
     * 提示语
     */
    @ApiModelProperty(value = "提示语")
    private String placeholder;
    /**
     * 英文提示语
     */
    @ApiModelProperty(value = "英文提示语")
    private String enPlaceholder;
    /**
     * 字段描述
     */
    @ApiModelProperty(value = "字段描述")
    private String fieldDesc;
    /**
     * 字段英文描述
     */
    @ApiModelProperty(value = "字段英文描述")
    private String fieldEnDesc;
    /**
     * 字数限制
     */
    @ApiModelProperty(value = "字数限制")
    private Integer inputLength;
    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    private Integer sequence;
    /**
     * 分组
     */
    @ApiModelProperty(value = "分组")
    private String fieldGroup;
    /**
     * 示例图片
     */
    @ApiModelProperty(value = "示例图片")
    private String legend;
    /**
     * 示例图片英文描述
     */
    @ApiModelProperty(value = "示例图片英文描述")
    private String legendEnDesc;
    /**
     * 示例图片描述
     */
    @ApiModelProperty(value = "示例图片描述")
    private String legendDesc;
    /**
     * 是否可编辑：1是；0否
     */
    @ApiModelProperty(value = "是否可编辑：1是；0否")
    private Integer isEdit;
    /**
     * 是否必填：1是；0否
     */
    @ApiModelProperty(value = "是否必填：1是；0否")
    private Integer isRequired;
    /**
     * 是否多选：1是；0否
     */
    @ApiModelProperty(value = "是否多选：1是；0否")
    private Integer isMultiple;
    /**
     * 是否是线下预登记字段：1是；0否
     */
    @ApiModelProperty(value = "是否是线下预登记字段：1是；0否")
    private Integer isOffline;
    /**
     * 是否需要验证
     */
    @ApiModelProperty(value = "是否需要验证：1是；0否")
    private Integer isVerification;
    /**
     * 验证关键字
     */
    @ApiModelProperty(value = "验证关键字")
    private String verificationKeyword;
    /**
     * 是否启用：1是；0否
     */
    @ApiModelProperty(value = "是否启用：1是；0否")
    private Integer isEnabled;
    /**
     * 是否删除：1是；0否
     */
    @ApiModelProperty(value = "是否删除：1是；0否")
    private Integer isDeleted;
    /**
     * 是否用于预登记：1是；0否
     */
    @ApiModelProperty(value = "是否用于完善信息：1是；0否")
    private Integer isPerfectInfo;
    /**
     * 是否用于详情：1是；0否
     */
    @ApiModelProperty(value = "是否用于详情：1是；0否")
    private Integer isDetails;
    /**
     * 前缀名称
     */
    @ApiModelProperty(value = "前缀名称")
    private String prefixName;
    /**
     * 前缀关键字
     */
    @ApiModelProperty(value = "前缀关键字")
    private String prefixKeyword;
    /**
     * 前缀属性
     */
    @ApiModelProperty(value = "前缀属性")
    private String prefixAttribute;
    /**
     * 前缀属性值
     */
    @ApiModelProperty(value = "前缀属性值")
    private String prefixAttributeValue;
    /**
     * 前缀标签键名
     */
    @ApiModelProperty(value = "前缀标签键名")
    private String prefixLabelKey;

    /**
     * 前缀值键名
     */
    @ApiModelProperty(value = "前缀值键名")
    private String prefixLabelValueKey;

    /**
     * 前缀子集键名
     */
    @ApiModelProperty(value = "前缀子集键名")
    private String prefixChildrenKey;
    /**
     * 前缀开关
     */
    @ApiModelProperty(value = "前缀开关")
    private Integer isPrefix;
    /**
     * 后缀名称
     */
    @ApiModelProperty(value = "后缀名称")
    private String suffixName;
    /**
     * 后缀关键字
     */
    @ApiModelProperty(value = "后缀关键字")
    private String suffixKeyword;
    /**
     * 后缀属性
     */
    @ApiModelProperty(value = "后缀属性")
    private String suffixAttribute;
    /**
     * 后缀属性值
     */
    @ApiModelProperty(value = "后缀属性值")
    private String suffixAttributeValue;
    /**
     * 后缀标签键名
     */
    @ApiModelProperty(value = "后缀标签键名")
    private String suffixLabelKey;
    /**
     * 后缀值键名
     */
    @ApiModelProperty(value = "后缀值键名")
    private String suffixLabelValueKey;
    /**
     * 后缀子集键名
     */
    @ApiModelProperty(value = "后缀子集键名")
    private String suffixChildrenKey;

    /**
     * 后缀开关
     */
    @ApiModelProperty(value = "后缀开关")
    private Integer isSuffix;

    /**
     * 用户选择的国家id
     */
    @ApiModelProperty(value = "用户选择的国家id")
    private Integer countryId;

}
